package hanglers

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"strconv"
	"video-hubs/models"
	"video-hubs/pkg"
)

func User(c *gin.Context) {
	name := c.PostForm("name")
	password := c.PostForm("password")
	apass := c.PostForm("apass")
	data := models.User{
		Name:     name,
		Password: pkg.Md5Password(password),
		Apass:    apass,
	}
	err := models.DB.Create(&data).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "注册失败",
		})
		return
	}

	c.JSON(200, gin.H{
		"code": 200,
		"msg":  "注册成功",
	})
	return

}

/*
	func Tel(c *gin.Context) {
		name := c.Query("name")
		password := c.Query("password")

		var user models.User
		err := models.DB.Where("name = ?", name).First(&user).Error
		if err != nil {
			c.JSON(200, gin.H{
				"code": 500,
				"msg":  "登录失败",
			})
			return
		}
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "登录成功",
		})
		return
	}
*/
func Add(c *gin.Context) {
	title := c.PostForm("title")
	content := c.PostForm("content")
	img := c.PostForm("img")
	data := models.Dy{
		Title:   title,
		Content: content,
		Img:     img,
	}
	err := models.DB.Create(&data).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "添加失败",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "添加成功",
		})
		return
	}
}
func Img(c *gin.Context) {
	file, err := c.FormFile("img")
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "图片获取失败",
		})
		return
	}
	path := "static/img/" + file.Filename
	err = c.SaveUploadedFile(file, path)
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "图片上传失败",
		})
		return
	} else {
		url := "http://" + c.Request.Host + "/" + path
		fmt.Println(url)
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "图片上传成功",
			"data": url,
		})
		return
	}
}
func List(c *gin.Context) {
	var dy []models.Dy
	err := models.DB.Find(&dy).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "查询失败",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "查询成功",
			"data": dy,
		})
		return
	}
}
func Like(c *gin.Context) {
	userId, _ := strconv.Atoi(c.Query("user_id"))
	dyId, _ := strconv.Atoi(c.Query("dy_id"))
	if userId == 0 || dyId == 0 {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "字段不可以是空的",
		})
		return
	}
	data := models.Like{
		UserId: userId,
		DyId:   dyId,
	}
	err := models.DB.Create(&data).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "点赞失败",
		})
		return
	}
	var dy models.Dy
	err = models.DB.Where("id = ?", dyId).First(&dy).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "未找到该文章",
		})
		return
	}
	dy.LikeCount++
	err = models.DB.Save(&dy).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "更新失败",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "点赞成功",
		})
		return
	}
}
func Use(c *gin.Context) {
	password := c.PostForm("password")
	var user models.User
	err := models.DB.Where("password = ?", password).First(&user).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "登录失败",
		})
		return
	}
	if pkg.Md5Password(password) != user.Password {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "密码不正确",
		})
		return
	}
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  "登陆成功",
	})
	return
}
